package com.ly.heart.domain;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ly.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ly.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 金蝶-采购退料单对象 erp_king_procure_refund_info
 *
 * @author cxl
 * @date 2024-07-16
 */
@TableName ("erp_king_procure_refund_info")
@ApiModel (value = "金蝶-采购退料单", description = "金蝶-采购退料单")
@Data
@Accessors(chain = true)
public class KingProcureRefundEntity{

        /** id */
        @TableId (type = IdType.INPUT)
        private String id;

        /** 单据类型 */
        @ApiModelProperty ("单据类型")
        @TableField ("doc_type")
        @Excel (name = "单据类型")
        private String docType;

        /** 业务类型（与单据类型相对应） */
        @TableField ("doc_business_type")
        @ApiModelProperty ("业务类型")
        @Excel (name = "业务类型")
        private String docBusinessType;

        /** 退料单编码，自动生成前端不处理，送金蝶 */
        @ApiModelProperty ("退料单编码，自动生成前端不处理，送金蝶")
        @TableField ("doc_code")
        @Excel (name = "退料单编码，自动生成前端不处理，送金蝶")
        private String docCode;

        /** 退料方式;1:退货退款;2:退货补货 */
        @ApiModelProperty ("退料方式;1:退货退款;2:退货补货")
        @TableField ("type")
        @Excel (name = "退料方式;1:退货退款;2:退货补货")
        private Integer type;

        /** 退料组织 */
        @ApiModelProperty ("退料组织")
        @TableField ("refund_org")
        @Excel (name = "退料组织")
        private String refundOrg;

        /** 需求组织 */
        @ApiModelProperty ("需求组织")
        @TableField ("require_org")
        @Excel (name = "需求组织")
        private String requireOrg;

        /** 采购组织 */
        @ApiModelProperty ("采购组织")
        @TableField ("purchase_org")
        @Excel (name = "采购组织")
        private String purchaseOrg;

        /** 采购部门 */
        @ApiModelProperty ("采购部门")
        @TableField ("purchase_dept")
        @Excel (name = "采购部门")
        private String purchaseDept;

        /** 退料部门 */
        @ApiModelProperty ("退料部门")
        @TableField ("refund_dept")
        @Excel (name = "退料部门")
        private String refundDept;

        /** 退料日期 */
        @ApiModelProperty ("退料日期")
        @TableField ("refund_time")
        @JsonFormat (pattern = "yyyy-MM-dd")
        @Excel (name = "退料日期", width = 30, dateFormat = "yyyy-MM-dd")
        private Date refundTime;

        /** 库存组 */
        @ApiModelProperty ("库存组")
        @TableField ("inventory_group")
        @Excel (name = "库存组")
        private String inventoryGroup;

        /** 仓管员 */
        @ApiModelProperty ("仓管员")
        @TableField ("management_by")
        @Excel (name = "仓管员")
        private String managementBy;

        /** 采购组 */
        @ApiModelProperty ("采购组")
        @TableField ("purchase_group")
        @Excel (name = "采购组")
        private String purchaseGroup;

        /** 补料方式 */
        @ApiModelProperty ("补料方式")
        @TableField ("supplement_method")
        @Excel (name = "补料方式")
        private String supplementMethod;

        /** 采购员 */
        @ApiModelProperty ("采购员")
        @TableField ("purchase_by")
        @Excel (name = "采购员")
        private String purchaseBy;

        /** 退料类型 */
        @ApiModelProperty ("退料类型（检验退料：A 库存退料：B）")
        @TableField ("refund_type")
        @Excel (name = "退料类型")
        private String refundType;

        /** 退料原因 */
        @ApiModelProperty ("退料原因")
        @TableField ("refund_reason")
        @Excel (name = "退料原因")
        private String refundReason;

        /** 退料方式 */
        @ApiModelProperty ("退料方式(退料补料A 退料并扣款B)")
        @TableField ("refund_method")
        @Excel (name = "退料方式")
        private String refundMethod;

        /** 验收方式 */
        @ApiModelProperty ("验收方式")
        @TableField ("check_method")
        @Excel (name = "验收方式")
        private String checkMethod;

        /** 供应商id */
        @ApiModelProperty ("供应商id")
        @TableField ("supplier_id")
        @Excel (name = "供应商id")
        private String supplierId;

        /** 供应商编码 */
        @ApiModelProperty ("供应商编码")
        @TableField ("supplier_code")
        @Excel (name = "供应商编码")
        private String supplierCode;

        /** 单据状态 */
        @ApiModelProperty ("单据状态")
        @TableField ("doc_status")
        @Excel (name = "单据状态")
        private String docStatus;

        /** 接收方id */
        @ApiModelProperty ("接收方id")
        @TableField ("provider_id")
        @Excel (name = "接收方id")
        private String providerId;

        /** 接收方编码 */
        @ApiModelProperty ("接收方编码")
        @TableField ("provider_code")
        @Excel (name = "接收方编码")
        private String providerCode;

        /** 接收方联系人 */
        @ApiModelProperty ("接收方联系人")
        @TableField ("provider_contacts")
        @Excel (name = "接收方联系人")
        private String providerContacts;

        @ApiModelProperty ("接收方地址")
        @TableField ("provider_address")
        @Excel (name = "接收方地址")
        private String providerAddress;

        @ApiModelProperty ("结算方id")
        @TableField ("balance_id")
        @Excel (name = "结算方id")
        private String balanceId;

        @ApiModelProperty ("结算方编码")
        @TableField ("balance_code")
        @Excel (name = "结算方编码")
        private String balanceCode;

        @ApiModelProperty ("收款方id")
        @TableField ("receive_id")
        @Excel (name = "收款方id")
        private String receiveId;

        @ApiModelProperty ("收款方编码")
        @TableField ("receive_code")
        @Excel (name = "收款方编码")
        private String receiveCode;

        @ApiModelProperty ("邮箱")
        @TableField ("email")
        @Excel (name = "邮箱")
        private String email;

        @ApiModelProperty ("结算组织")
        @TableField ("settlement_org")
        @Excel (name = "结算组织")
        private String settlementOrg;

        @ApiModelProperty ("定价时点")
        @TableField ("pricing_time_point")
        @Excel (name = "定价时点")
        private String pricingTimePoint;

        @ApiModelProperty ("本位币")
        @TableField ("base_currency")
        @Excel (name = "本位币")
        private String baseCurrency;

        @ApiModelProperty ("结算方式(结算方式code)")
        @TableField ("settlement_method")
        @Excel (name = "结算方式(结算方式code)")
        private String settlementMethod;

        @ApiModelProperty ("价目表(价目表code)")
        @TableField ("price_info_code")
        @Excel (name = "价目表(价目表code)")
        private String priceInfoCode;

        @ApiModelProperty ("汇率类型(汇率类型表code)")
        @TableField ("exchange_rate_type")
        @Excel (name = "汇率类型(汇率类型表code)")
        private String exchangeRateType;

        @ApiModelProperty ("结算币别(币别表code)")
        @TableField ("settlement_currency")
        @Excel (name = "结算币别(币别表code)")
        private String settlementCurrency;

        @ApiModelProperty ("折扣表(折扣表code)")
        @TableField ("discount_info_code")
        @Excel (name = "折扣表(折扣表code)")
        private String discountInfoCode;

        @ApiModelProperty ("汇率")
        @TableField ("exchange_rate")
        @Excel (name = "汇率")
        private String exchangeRate;

        @ApiModelProperty ("付款条件(付款条件表code)")
        @TableField ("term_of_payment")
        @Excel (name = "付款条件(付款条件表code)")
        private String termOfPayment;

        @ApiModelProperty ("金额")
        @TableField ("money_amount")
        @Excel (name = "金额")
        private String moneyAmount;

        @ApiModelProperty ("税额")
        @TableField ("tax_amount")
        @Excel (name = "税额")
        private String taxAmount;

        @ApiModelProperty ("货主类型")
        @TableField ("cargo_owner_type")
        @Excel (name = "货主类型")
        private String cargoOwnerType;

        @ApiModelProperty ("货主")
        @TableField ("cargo_owner")
        @Excel (name = "货主")
        private String cargoOwner;

        @ApiModelProperty ("税额(本位币)")
        @TableField ("tax_amount_base")
        @Excel (name = "税额(本位币)")
        private String taxAmountBase;

        @ApiModelProperty ("金额(本位币)")
        @TableField ("money_amount_base")
        @Excel (name = "金额(本位币)")
        private String moneyAmountBase;

        @ApiModelProperty ("价税合计(本位币)")
        @TableField ("total_price_tax_base")
        @Excel (name = "价税合计(本位币)")
        private String totalPriceTaxBase;

        @ApiModelProperty ("总成本(本位币)")
        @TableField ("total_cost_base")
        @Excel (name = "总成本(本位币)")
        private String totalCostBase;

        @ApiModelProperty ("是否含税")
        @TableField ("is_tax")
        @Excel (name = "是否含税")
        private Boolean isTax;

        @ApiModelProperty ("是否含价外税")
        @TableField ("is_extra_price_tax")
        @Excel (name = "是否含价外税")
        private Boolean isExtraPriceTax;

        @ApiModelProperty ("价税合计")
        @TableField ("total_price_tax")
        @Excel (name = "价税合计")
        private String totalPriceTax;

        @ApiModelProperty ("总成本")
        @TableField ("total_cost")
        @Excel (name = "总成本")
        private String totalCost;

        @ApiModelProperty ("创建人")
        @TableField ("create_name")
        @Excel (name = "创建人")
        private String createName;

        @ApiModelProperty ("最后修改人")
        @TableField ("last_update_name")
        @Excel (name = "最后修改人")
        private String lastUpdateName;

        @ApiModelProperty ("最后修改日期")
        @TableField ("last_update_time")
        @JsonFormat (pattern = "yyyy-MM-dd")
        @Excel (name = "最后修改日期", width = 30, dateFormat = "yyyy-MM-dd")
        private Date lastUpdateTime;

        @ApiModelProperty ("审核人")
        @TableField ("examine_name")
        @Excel (name = "审核人")
        private String examineName;

        @ApiModelProperty ("审核日期")
        @TableField ("examine_time")
        @JsonFormat (pattern = "yyyy-MM-dd")
        @Excel (name = "审核日期", width = 30, dateFormat = "yyyy-MM-dd")
        private Date examineTime;

        @ApiModelProperty ("确认状态")
        @TableField ("confirm_state")
        @Excel (name = "确认状态")
        private String confirmState;

        @ApiModelProperty ("确认人")
        @TableField ("confirm_name")
        @Excel (name = "确认人")
        private String confirmName;

        @ApiModelProperty ("确认日期")
        @TableField ("confirm_time")
        @JsonFormat (pattern = "yyyy-MM-dd")
        @Excel (name = "确认日期", width = 30, dateFormat = "yyyy-MM-dd")
        private Date confirmTime;

        @ApiModelProperty ("货主客户")
        @TableField ("cargo_customer")
        @Excel (name = "货主客户")
        private String cargoCustomer;

        @ApiModelProperty ("创建时间")
        @TableField ("create_time")
        @JsonFormat (pattern = "yyyy-MM-dd")
        @Excel (name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
        private Date createTime;

        @ApiModelProperty ("修改人")
        @TableField ("update_by")
        @Excel (name = "修改人")
        private String updateBy;

        @ApiModelProperty ("修改日期")
        @TableField ("update_time")
        @JsonFormat( pattern = "yyyy-MM-dd HH:mm:ss" )
        @Excel (name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
        private Date updateTime;

        @ApiModelProperty ("是否可用")
        @TableField ("is_used")
        @Excel (name = "是否可用")
        @TableLogic
        private Integer isUsed;

        @ApiModelProperty ("流程实例id")
        @TableField ("instance_id")
        private String instanceId;

        @ApiModelProperty ("流程状态")
        @TableField ("state")
        private String state;

        @ApiModelProperty ( "是否发送金蝶；1：是；2：否" )
        @TableField ( "is_send" )
        @Excel ( name = "是否发送金蝶" )
        private Integer isSend;

        @ApiModelProperty("业务type")
        @TableField (exist = false)
        private String businessType;

        @ApiModelProperty("流程模型id")
        @TableField (exist = false)
        private String modelId;

        @ApiModelProperty("物料明细信息")
        @TableField(exist = false)
        private List<KingProcureRefundMaterialEntity> materialLists;

        @TableField (exist = false)
        @ApiModelProperty ("源单类型(0采购订单 1收料通知单)")
        private String sourceType;





        @ApiModelProperty("退料组织名称")
        @TableField (exist = false)
        private String refundOrgName;

        @ApiModelProperty("需求组织名称")
        @TableField (exist = false)
        private String requireOrgName;

        @ApiModelProperty("采购组织名称")
        @TableField (exist = false)
        private String purchaseOrgName;

        @ApiModelProperty("采购部门名称")
        @TableField (exist = false)
        private String purchaseDeptName;

        @ApiModelProperty("退料部门名称")
        @TableField (exist = false)
        private String refundDeptName;

        @ApiModelProperty("库存组名称")
        @TableField (exist = false)
        private String inventoryGroupName;

        @ApiModelProperty("仓管员名称")
        @TableField (exist = false)
        private String managementByName;

        @ApiModelProperty("采购组名称")
        @TableField (exist = false)
        private String purchaseGroupName;

        @ApiModelProperty("采购员名称")
        @TableField (exist = false)
        private String purchaseByName;

        @ApiModelProperty("供应商名称")
        @TableField (exist = false)
        private String supplierName;

        @ApiModelProperty("接收方名称")
        @TableField(exist = false)
        private String providerName;

        @ApiModelProperty("接收方联系人名称")
        @TableField(exist = false)
        private String providerContactsName;

        @ApiModelProperty("结算方名称")
        @TableField(exist = false)
        private String balanceName;

        @ApiModelProperty("收款方名称")
        @TableField(exist = false)
        private String receiveName;

        @ApiModelProperty("结算组织名称")
        @TableField(exist = false)
        private String settlementOrgName;

        @ApiModelProperty("结算方式名称")
        @TableField(exist = false)
        private String settlementMethodName;

        @ApiModelProperty("价目表名称")
        @TableField(exist = false)
        private String priceInfoName;

        @ApiModelProperty("汇率类型名称")
        @TableField(exist = false)
        private String exchangeRateTypeName;

        @ApiModelProperty("结算币别名称")
        @TableField(exist = false)
        private String settlementCurrencyName;

        @ApiModelProperty("折扣表名称")
        @TableField(exist = false)
        private String discountInfoName;

        @ApiModelProperty("付款条件名称")
        @TableField(exist = false)
        private String termOfPaymentName;

}
